// 这个文件用于实现登录拦截  =》未登录的用户，不能访问首页，需要拦截到登录页
import router from '@/router'
import store from '@/store'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css' // 引入进度条样式

const whiteList = ['/login', '/404']

// 全局前置导航守卫
router.beforeEach(async(to, from, next) => {
  NProgress.start()

// 获取token进行判断
const token = store.getters.token
if (token) {
  // 存在token， 有token
  if (to.path === '/login') {
    // 如果已经登录过，还去的是登录，没必要重复登录
    // 引导到首页,如果被next（路径） 重新引导跳走了，不会触发afterEach
   next('/')
   NProgress.done() // 需要手动在next跳转后，关闭一下
} else {
  // 正常应该都放行，想去哪去哪
    // 在放行之前，发送请求，获取个人信息，拿到资料后再放行
    // console.log('获取个人资料')
   if(!store.state.user.userInfo.userId) {
     // 没有个人信息，获取个人资料
    const res = await store.dispatch('user/getUserInfo')
    //  console.log('将来权限控制,控制菜单的显示', res)
   }
  next()
  }
 } else {
   // 没有token
   // 判断是否在白名单中
   if (whiteList.includes(to.path)) {
     // 在白名单中，这个页面，不需要登录就可以访问，直接放行
     next()
   } else {
  //  不在白名单中，这个页面需要授权访问，拦截到登录页
  next('/login')
  NProgress.done()
   }
 }
})

// 全局后置守卫，完全进入到路由页面时， 触发
router.afterEach((to, from) =>{
  NProgress.done()
})
